package com.哈希.练习题;

import java.util.Arrays;

public class Leetcode3 {
    /**
     * 无重复字符的最长字串
     * 给定一个字符串 s ，请你找出其中不含有重复字符的 最长 子串 的长度。
     *
     * 示例 1:
     * 输入: s = "abcabcbb"
     * 输出: 3
     * 解释: 因为无重复字符的最长子串是 "abc"，所以其长度为 3。
     */
    public int lengthOfLongestSubstring(String s) {
        int[] map = new int[128];
        Arrays.fill(map, -1);
        int begin = 0;
        int maxLength = 0;
        for(int i = 0; i < s.length(); i++) {
            char ch = s.charAt(i);
            if(map[ch] != -1) {
                begin = Math.max(begin, map[ch] + 1);
                map[ch] = i;
            }else {
                map[ch] = i;
            }
            maxLength = Math.max(maxLength, i - begin + 1);
        }
       return maxLength;
    }
}
